/**
 * @file
 * @brief 设备栈描述：SOC
 * @author
 * + 隐星魂 (Roy.Sun) <https://xwos.tech>
 * @copyright
 * + (c) 2015 隐星魂 (Roy.Sun) <https://xwos.tech>
 * > Licensed under the Apache License, Version 2.0 (the "License");
 * > you may not use this file except in compliance with the License.
 * > You may obtain a copy of the License at
 * >
 * >         http://www.apache.org/licenses/LICENSE-2.0
 * >
 * > Unless required by applicable law or agreed to in writing, software
 * > distributed under the License is distributed on an "AS IS" BASIS,
 * > WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * > See the License for the specific language governing permissions and
 * > limitations under the License.
 */

/******** ******** ******** ******** ******** ******** ******** ********
 ******** ******** ********      include      ******** ******** ********
 ******** ******** ******** ******** ******** ******** ******** ********/
#include <xwos/standard.h>
#include <xwos/lib/xwbop.h>
#include <xwos/irq.h>
#include <soc_irq.h>
#include <soc_clk.h>
#include <soc_eirq.h>
#include <soc_gpio.h>
#include <soc_dma.h>
#include <xwmd/ds/device.h>
#include <xwmd/ds/soc/chip.h>
#include <bdl/ds/description/mpc560xbdkp.h>
#include <driver/ds/soc.h>

/******** ******** ******** ******** ******** ******** ******** ********
 ******** ******** ********       .data       ******** ******** ********
 ******** ******** ******** ******** ******** ******** ******** ********/
const struct soc_irq_cfg mpc560xb_soc_irq_cfgs[] = {
        [0] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [1] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [2] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [3] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [4] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [5] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [6] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
#if defined(MPC5607B)
        [7] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [8] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [9] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [10] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [11] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [12] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [13] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [14] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [15] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [16] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [17] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [18] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [19] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [20] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [21] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [22] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
        [23] = {
                .priority = BDL_IRQ_PRIO_LOW,
        },
#endif /* #if defined(MPC5607B) */
};

const struct xwos_irq_resource mpc560xb_soc_irq_resources[] = {
        [0] = {
                .irqn = IRQ_EXT_IRQ0,
                .isr = mpc560xb_eirq0_7_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[0],
                .description = "rsc.irq.eirq0",
        },
        [1] = {
                .irqn = IRQ_EXT_IRQ1,
                .isr = mpc560xb_eirq8_15_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[1],
                .description = "rsc.irq.eirq1",
        },
        [2] = {
                .irqn = IRQ_EXT_IRQ2,
                .isr = mpc560xb_eirq16_23_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[2],
                .description = "rsc.irq.eirq2",
        },
        [3] = {
                .irqn = IRQ_WKUP_IRQ0,
                .isr = mpc560xb_wkup_irq0_7_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[3],
                .description = "rsc.irq.wkup0",
        },
        [4] = {
                .irqn = IRQ_WKUP_IRQ1,
                .isr = mpc560xb_wkup_irq8_15_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[4],
                .description = "rsc.irq.wkup1",
        },
        [5] = {
                .irqn = IRQ_WKUP_IRQ2,
                .isr = mpc560xb_wkup_irq16_23_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[5],
                .description = "rsc.irq.wkup2",
        },
        [6] = {
                .irqn = IRQ_WKUP_IRQ3,
                .isr = mpc560xb_wkup_irq24_28_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[6],
                .description = "rsc.irq.wkup3",
        },
#if defined(MPC5607B)
        [7] = {
                .irqn = IRQ_EDMA_CMBERR,
                .isr = mpc560xb_edma_cmberr_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[7],
                .description = "rsc.irq.edma.cmberr",
        },
        [8] = {
                .irqn = IRQ_EDMA_CH0,
                .isr = mpc560xb_edma_ch0_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[8],
                .description = "rsc.irq.edma.ch0",
        },
        [9] = {
                .irqn = IRQ_EDMA_CH1,
                .isr = mpc560xb_edma_ch1_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[9],
                .description = "rsc.irq.edma.ch1",
        },
        [10] = {
                .irqn = IRQ_EDMA_CH2,
                .isr = mpc560xb_edma_ch2_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[10],
                .description = "rsc.irq.edma.ch2",
        },
        [11] = {
                .irqn = IRQ_EDMA_CH3,
                .isr = mpc560xb_edma_ch3_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[11],
                .description = "rsc.irq.edma.ch3",
        },
        [12] = {
                .irqn = IRQ_EDMA_CH4,
                .isr = mpc560xb_edma_ch4_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[12],
                .description = "rsc.irq.edma.ch4",
        },
        [13] = {
                .irqn = IRQ_EDMA_CH5,
                .isr = mpc560xb_edma_ch5_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[13],
                .description = "rsc.irq.edma.ch5",
        },
        [14] = {
                .irqn = IRQ_EDMA_CH6,
                .isr = mpc560xb_edma_ch6_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[14],
                .description = "rsc.irq.edma.ch6",
        },
        [15] = {
                .irqn = IRQ_EDMA_CH7,
                .isr = mpc560xb_edma_ch7_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[15],
                .description = "rsc.irq.edma.ch7",
        },
        [16] = {
                .irqn = IRQ_EDMA_CH8,
                .isr = mpc560xb_edma_ch8_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[16],
                .description = "rsc.irq.edma.ch8",
        },
        [17] = {
                .irqn = IRQ_EDMA_CH9,
                .isr = mpc560xb_edma_ch9_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[17],
                .description = "rsc.irq.edma.ch9",
        },
        [18] = {
                .irqn = IRQ_EDMA_CH10,
                .isr = mpc560xb_edma_ch10_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[18],
                .description = "rsc.irq.edma.ch10",
        },
        [19] = {
                .irqn = IRQ_EDMA_CH11,
                .isr = mpc560xb_edma_ch11_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[19],
                .description = "rsc.irq.edma.ch11",
        },
        [20] = {
                .irqn = IRQ_EDMA_CH12,
                .isr = mpc560xb_edma_ch12_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[20],
                .description = "rsc.irq.edma.ch12",
        },
        [21] = {
                .irqn = IRQ_EDMA_CH13,
                .isr = mpc560xb_edma_ch13_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[21],
                .description = "rsc.irq.edma.ch13",
        },
        [22] = {
                .irqn = IRQ_EDMA_CH14,
                .isr = mpc560xb_edma_ch14_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[22],
                .description = "rsc.irq.edma.ch14",
        },
        [23] = {
                .irqn = IRQ_EDMA_CH15,
                .isr = mpc560xb_edma_ch15_isr,
                .cfg = &mpc560xb_soc_irq_cfgs[23],
                .description = "rsc.irq.edma.ch15",
        },
#endif /* #if defined(MPC5607B) */
};

const struct xwds_resources mpc560xb_soc_resources = {
        .irqrsc_array = mpc560xb_soc_irq_resources,
        .irqrsc_num = xw_array_size(mpc560xb_soc_irq_resources),
        .regrsc_array = NULL,
        .regrsc_num = 0,
        .clkrsc_array = NULL,
        .clkrsc_num = 0,
        .pwrrsc_array = NULL,
        .pwrrsc_num = 0,
        .gpiorsc_array = NULL,
        .gpiorsc_num = 0,
        .dmarsc_array = NULL,
        .dmarsc_num = 0,
};

const struct soc_sys_cfg mpc560xb_soc_cfg = {
        .padsel = {
                [SOC_PADSEL0_CAN1RX] = SOC_PADSEL_CAN1RX_PCR35,
                [SOC_PADSEL1_CAN2RX] = SOC_PADSEL_CAN2RX_PCR73,
                [SOC_PADSEL2_CAN3RX] = SOC_PADSEL_CAN3RX_PCR36,
                [SOC_PADSEL3_CAN4RX] = SOC_PADSEL_CAN4RX_PCR35,
                [SOC_PADSEL4_CAN5RX] = SOC_PADSEL_CAN5RX_PCR64,
                [SOC_PADSEL5_SCK_0] = SOC_PADSEL_SCK_0_PCR14,
                [SOC_PADSEL6_CS0_0] = SOC_PADSEL_CS0_0_PCR14,
                [SOC_PADSEL7_SCK_1] = SOC_PADSEL_SCK_1_PCR34,
                [SOC_PADSEL8_SIN_1] = SOC_PADSEL_SIN_1_PCR36,
                [SOC_PADSEL9_CS0_1] = SOC_PADSEL_CS0_1_PCR35,
                [SOC_PADSEL10_SCK_2] = SOC_PADSEL_SCK_2_PCR46,
                [SOC_PADSEL11_SIN_2] = SOC_PADSEL_SIN_2_PCR44,
                [SOC_PADSEL12_CS0_2] = SOC_PADSEL_CS0_2_PCR47,
                [SOC_PADSEL13_E0UC3] = SOC_PADSEL_E0UC3_PCR3,
                [SOC_PADSEL14_E0UC4] = SOC_PADSEL_E0UC4_PCR4,
                [SOC_PADSEL15_E0UC5] = SOC_PADSEL_E0UC5_PCR5,
                [SOC_PADSEL16_E0UC6] = SOC_PADSEL_E0UC6_PCR6,
                [SOC_PADSEL17_E0UC7] = SOC_PADSEL_E0UC7_PCR7,
                [SOC_PADSEL18_E0UC10] = SOC_PADSEL_E0UC10_PCR10,
                [SOC_PADSEL19_E0UC11] = SOC_PADSEL_E0UC11_PCR11,
                [SOC_PADSEL20_E0UC12] = SOC_PADSEL_E0UC12_PCR44,
                [SOC_PADSEL21_E0UC13] = SOC_PADSEL_E0UC13_PCR45,
                [SOC_PADSEL22_E0UC14] = SOC_PADSEL_E0UC14_PCR46,
                [SOC_PADSEL23_E0UC22] = SOC_PADSEL_E0UC22_PCR70,
                [SOC_PADSEL24_E0UC23] = SOC_PADSEL_E0UC23_PCR71,
                [SOC_PADSEL25_E0UC24] = SOC_PADSEL_E0UC24_PCR60,
                [SOC_PADSEL26_E0UC25] = SOC_PADSEL_E0UC25_PCR61,
                [SOC_PADSEL27_E0UC26] = SOC_PADSEL_E0UC26_PCR62,
                [SOC_PADSEL28_E0UC27] = SOC_PADSEL_E0UC27_PCR63,
                [SOC_PADSEL29_SCL] = SOC_PADSEL_SCL_PCR11,
                [SOC_PADSEL30_SDA] = SOC_PADSEL_SDA_PCR10,
                [SOC_PADSEL31_LIN3RX] = SOC_PADSEL_LIN3RX_PCR8,
#ifdef MPC5607B
                [SOC_PADSEL32_SCK_3] = SOC_PADSEL_SCK3_PCR100,
                [SOC_PADSEL33_SIN_3] = SOC_PADSEL_SIN3_PCR101,
                [SOC_PADSEL34_CS0_3] = SOC_PADSEL_CS0_3_PCR99,
                [SOC_PADSEL35_SCK_4] = SOC_PADSEL_SCK_4_PCR109,
                [SOC_PADSEL36_SIN_4] = SOC_PADSEL_SIN_4_PCR106,
                [SOC_PADSEL37_CS0_4] = SOC_PADSEL_CS0_4_PCR107,
                [SOC_PADSEL38_E0UC0] = SOC_PADSEL_E0UC0_PCR0,
                [SOC_PADSEL39_E0UC1] = SOC_PADSEL_E0UC1_PCR1,
                [SOC_PADSEL40_E0UC28] = SOC_PADSEL_E0UC28_PCR2,
                [SOC_PADSEL41_E0UC29] = SOC_PADSEL_E0UC29_PCR13,
                [SOC_PADSEL42_E0UC30] = SOC_PADSEL_E0UC30_PCR16,
                [SOC_PADSEL43_E0UC31] = SOC_PADSEL_E0UC31_PCR17,
                [SOC_PADSEL44_E1UC1] = SOC_PADSEL_E1UC1_PCR111,
                [SOC_PADSEL45_E1UC2] = SOC_PADSEL_E1UC2_PCR112,
                [SOC_PADSEL46_E1UC3] = SOC_PADSEL_E1UC3_PCR113,
                [SOC_PADSEL47_E1UC4] = SOC_PADSEL_E1UC4_PCR114,
                [SOC_PADSEL48_E1UC5] = SOC_PADSEL_E1UC5_PCR115,
                [SOC_PADSEL49_E1UC17] = SOC_PADSEL_E1UC17_PCR104,
                [SOC_PADSEL50_E1UC18] = SOC_PADSEL_E1UC18_PCR105,
                [SOC_PADSEL51_E1UC25] = SOC_PADSEL_E1UC25_PCR92,
                [SOC_PADSEL52_E1UC26] = SOC_PADSEL_E1UC26_PCR93,
                [SOC_PADSEL53_E1UC27] = SOC_PADSEL_E1UC27_PCR94,
                [SOC_PADSEL54_E1UC28] = SOC_PADSEL_E1UC28_PCR38,
                [SOC_PADSEL55_E1UC29] = SOC_PADSEL_E1UC29_PCR39,
                [SOC_PADSEL56_E1UC30] = SOC_PADSEL_E1UC30_PCR74,
                [SOC_PADSEL57_E1UC31] = SOC_PADSEL_E1UC31_PCR36,
                [SOC_PADSEL58_LIN2RX] = SOC_PADSEL_LIN2RX_PCR41,
                [SOC_PADSEL59_LIN4RX] = SOC_PADSEL_LIN4RX_PCR6,
                [SOC_PADSEL60_LIN5RX] = SOC_PADSEL_LIN5RX_PCR4,
                [SOC_PADSEL61_LIN8RX] = SOC_PADSEL_LIN8RX_PCR111,
                [SOC_PADSEL62_LIN0RX] = SOC_PADSEL_LIN0RX_PCR19,
#endif
        },
};

const struct soc_gpio_pincfg mpc560xb_gpio_pincfgs[SOC_GPIO_PORT_NUM][SOC_GPIO_PIN_NUM] = {
        [SOC_GPIO_PORT_A] = {
                [SOC_GPIO_PIN_0] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_1] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_2] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_3] = { /* EIRQ0 */
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_EN,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_EN,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_4] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_5] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_6] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_7] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_8] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_9] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_10] = { /* I2C SDA */
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_AM2,
                                .obe = SOC_GPIO_OBE_EN,
                                .ibe = SOC_GPIO_IBE_EN,
                                .ode = SOC_GPIO_ODE_EN,
                                .src = SOC_GPIO_SRC_FAST,
                                .wpe = SOC_GPIO_WPE_EN,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_11] = { /* I2C SCL */
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_AM2,
                                .obe = SOC_GPIO_OBE_EN,
                                .ibe = SOC_GPIO_IBE_EN,
                                .ode = SOC_GPIO_ODE_EN,
                                .src = SOC_GPIO_SRC_FAST,
                                .wpe = SOC_GPIO_WPE_EN,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_12] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_13] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_14] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_15] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
        },
        [SOC_GPIO_PORT_B] = {
                [SOC_GPIO_PIN_0] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_1] = { /* WKUP4 */
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_EN,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_EN,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_2] = { /* LINFLEX_0 TXD */
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_AM1,
                                .obe = SOC_GPIO_OBE_EN,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_3] = { /* LINFLEX_0 RXD */
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_EN,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_4] = { /* ADC GPI[0] */
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_EN,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_5] = { /* ADC GPI[1] */
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_EN,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_6] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_7] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_8] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_9] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_10] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_11] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_12] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_13] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_14] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_15] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
        },
        [SOC_GPIO_PORT_C] = {
                [SOC_GPIO_PIN_0] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_1] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_2] = { /* SPI_CLK: SPI[1]_CLK */
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_AM1,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_EN,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_FAST,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_3] = { /* SPI_CS: SPI[1]_CS0 */
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_AM1,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_EN,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_FAST,
                                .wpe = SOC_GPIO_WPE_EN, /* CS pin must be pull-up */
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_4] = { /* SPI_MOSI: SPI[1]_SIN */
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_AM1,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_EN,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_FAST,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_5] = { /* SPI_MISO: SPI[1]_OUT */
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_AM1,
                                .obe = SOC_GPIO_OBE_EN,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_FAST,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_6] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_7] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_8] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_9] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_10] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_11] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_12] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_13] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_14] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_15] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
        },
        [SOC_GPIO_PORT_D] = {
                [SOC_GPIO_PIN_0] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_1] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_2] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_3] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_4] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_5] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_6] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_7] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_8] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_9] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_10] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_11] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_12] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_13] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_14] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_15] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
        },
        [SOC_GPIO_PORT_E] = {
                [SOC_GPIO_PIN_0] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_1] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_2] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_3] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_4] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_5] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_6] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_7] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_8] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_9] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_10] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_11] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_12] = { /* LED0 */
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_EN,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_FAST,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 1,
                },
                [SOC_GPIO_PIN_13] = { /* LED1 */
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_EN,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_FAST,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 1,
                },
                [SOC_GPIO_PIN_14] = { /* LED2 */
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_EN,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_FAST,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 1,
                },
                [SOC_GPIO_PIN_15] = { /* LED3 */
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_EN,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_FAST,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 1,
                },
        },
        [SOC_GPIO_PORT_F] = {
                [SOC_GPIO_PIN_0] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_1] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_2] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_3] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_4] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_5] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_6] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_7] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_8] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_9] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_10] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_11] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_12] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_13] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_14] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_15] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
        },
        [SOC_GPIO_PORT_G] = {
                [SOC_GPIO_PIN_0] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_1] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_2] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_3] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_4] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_5] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_6] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_7] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_8] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_9] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_10] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_11] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_12] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_13] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_14] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_15] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
        },
        [SOC_GPIO_PORT_H] = {
                [SOC_GPIO_PIN_0] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_1] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_2] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_3] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_4] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_5] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_6] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_7] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_8] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_9] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_10] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PU,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_11] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PD,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_12] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PD,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_13] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PD,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_14] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PD,
                        },
                        .dout = 0,
                },
                [SOC_GPIO_PIN_15] = {
                        .cfg.bit = {
                                .smc = SOC_GPIO_SMC_OBD,
                                .apc = SOC_GPIO_APC_DS,
                                .pa = SOC_GPIO_PA_GPIO,
                                .obe = SOC_GPIO_OBE_DS,
                                .ibe = SOC_GPIO_IBE_DS,
                                .ode = SOC_GPIO_ODE_DS,
                                .src = SOC_GPIO_SRC_SLOW,
                                .wpe = SOC_GPIO_WPE_DS,
                                .wps = SOC_GPIO_WPS_PD,
                        },
                        .dout = 0,
                },
        },
};

xwsq_t mpc560xb_gpio_pinstatus[SOC_GPIO_PORT_NUM] = {
        [SOC_GPIO_PORT_A] = 0,
        [SOC_GPIO_PORT_B] = 0,
        [SOC_GPIO_PORT_C] = 0,
        [SOC_GPIO_PORT_D] = 0,
        [SOC_GPIO_PORT_E] = 0,
        [SOC_GPIO_PORT_F] = 0,
        [SOC_GPIO_PORT_G] = 0,
        [SOC_GPIO_PORT_H] = 0,
};

__xwds_soc_eirq_tbl_qualifier
xwds_eirq_f mpc560xb_eirq_isrs[SOC_WKUP_NUM + SOC_EIRQ_NUM] = {
        [SOC_WKUP_0] = NULL,
        [SOC_WKUP_1] = NULL,
        [SOC_WKUP_2] = NULL,
        [SOC_WKUP_3] = NULL,
        [SOC_WKUP_4] = NULL,
        [SOC_WKUP_5] = NULL,
        [SOC_WKUP_6] = NULL,
        [SOC_WKUP_7] = NULL,
        [SOC_WKUP_8] = NULL,
        [SOC_WKUP_9] = NULL,
        [SOC_WKUP_10] = NULL,
        [SOC_WKUP_11] = NULL,
        [SOC_WKUP_12] = NULL,
        [SOC_WKUP_13] = NULL,
        [SOC_WKUP_14] = NULL,
        [SOC_WKUP_15] = NULL,
        [SOC_WKUP_16] = NULL,
        [SOC_WKUP_17] = NULL,
        [SOC_WKUP_18] = NULL,
        [SOC_WKUP_19] = NULL,
#if defined(MPC5607B)
        [SOC_WKUP_20] = NULL,
        [SOC_WKUP_21] = NULL,
        [SOC_WKUP_22] = NULL,
        [SOC_WKUP_23] = NULL,
        [SOC_WKUP_24] = NULL,
        [SOC_WKUP_25] = NULL,
        [SOC_WKUP_26] = NULL,
        [SOC_WKUP_27] = NULL,
        [SOC_WKUP_28] = NULL,
#endif /* #if defined(MPC5607B) */
        [SOC_EIRQ_0] = NULL,
        [SOC_EIRQ_1] = NULL,
        [SOC_EIRQ_2] = NULL,
        [SOC_EIRQ_3] = NULL,
        [SOC_EIRQ_4] = NULL,
        [SOC_EIRQ_5] = NULL,
        [SOC_EIRQ_6] = NULL,
        [SOC_EIRQ_7] = NULL,
        [SOC_EIRQ_8] = NULL,
        [SOC_EIRQ_9] = NULL,
        [SOC_EIRQ_10] = NULL,
        [SOC_EIRQ_11] = NULL,
        [SOC_EIRQ_12] = NULL,
        [SOC_EIRQ_13] = NULL,
        [SOC_EIRQ_14] = NULL,
        [SOC_EIRQ_15] = NULL,
};

__xwds_soc_eirq_tbl_qualifier
xwds_eirq_arg_t mpc560xb_eirq_isrargs[SOC_WKUP_NUM + SOC_EIRQ_NUM] = {
        [SOC_WKUP_0] = NULL,
        [SOC_WKUP_1] = NULL,
        [SOC_WKUP_2] = NULL,
        [SOC_WKUP_3] = NULL,
        [SOC_WKUP_4] = NULL,
        [SOC_WKUP_5] = NULL,
        [SOC_WKUP_6] = NULL,
        [SOC_WKUP_7] = NULL,
        [SOC_WKUP_8] = NULL,
        [SOC_WKUP_9] = NULL,
        [SOC_WKUP_10] = NULL,
        [SOC_WKUP_11] = NULL,
        [SOC_WKUP_12] = NULL,
        [SOC_WKUP_13] = NULL,
        [SOC_WKUP_14] = NULL,
        [SOC_WKUP_15] = NULL,
        [SOC_WKUP_16] = NULL,
        [SOC_WKUP_17] = NULL,
        [SOC_WKUP_18] = NULL,
        [SOC_WKUP_19] = NULL,
#if defined(MPC5607B)
        [SOC_WKUP_20] = NULL,
        [SOC_WKUP_21] = NULL,
        [SOC_WKUP_22] = NULL,
        [SOC_WKUP_23] = NULL,
        [SOC_WKUP_24] = NULL,
        [SOC_WKUP_25] = NULL,
        [SOC_WKUP_26] = NULL,
        [SOC_WKUP_27] = NULL,
        [SOC_WKUP_28] = NULL,
#endif /* #if defined(MPC5607B) */
        [SOC_EIRQ_0] = NULL,
        [SOC_EIRQ_1] = NULL,
        [SOC_EIRQ_2] = NULL,
        [SOC_EIRQ_3] = NULL,
        [SOC_EIRQ_4] = NULL,
        [SOC_EIRQ_5] = NULL,
        [SOC_EIRQ_6] = NULL,
        [SOC_EIRQ_7] = NULL,
        [SOC_EIRQ_8] = NULL,
        [SOC_EIRQ_9] = NULL,
        [SOC_EIRQ_10] = NULL,
        [SOC_EIRQ_11] = NULL,
        [SOC_EIRQ_12] = NULL,
        [SOC_EIRQ_13] = NULL,
        [SOC_EIRQ_14] = NULL,
        [SOC_EIRQ_15] = NULL,
};

const struct soc_dmac_private_cfg mpc560xb_dmac_cfg = {
        .cr.bit = {
                .reserved0 = 0,
                .reserved1 = 0,
                .reserved2 = 0,
                .reserved3 = 0,
                .grp0pri = 3,
                .emlm = 0,
                .clm = 0,
                .reserved4 = 0,
                .hoe = 1,
                .erga = 0,
                .erca = 1,
                .edbg = 1,
                .ebw = 0,
        },
        .cpr = {
                [0].bit = {
                        .ecp = 0,
                        .dpa = 0,
                        .reserved = 0,
                        .chpri = 0,
                },
                [1].bit = {
                        .ecp = 0,
                        .dpa = 0,
                        .reserved = 0,
                        .chpri = 1,
                },
                [2].bit = {
                        .ecp = 0,
                        .dpa = 0,
                        .reserved = 0,
                        .chpri = 2,
                },
                [3].bit = {
                        .ecp = 0,
                        .dpa = 0,
                        .reserved = 0,
                        .chpri = 3,
                },
                [4].bit = {
                        .ecp = 0,
                        .dpa = 0,
                        .reserved = 0,
                        .chpri = 4,
                },
                [5].bit = {
                        .ecp = 0,
                        .dpa = 0,
                        .reserved = 0,
                        .chpri = 5,
                },
                [6].bit = {
                        .ecp = 0,
                        .dpa = 0,
                        .reserved = 0,
                        .chpri = 6,
                },
                [7].bit = {
                        .ecp = 0,
                        .dpa = 0,
                        .reserved = 0,
                        .chpri = 7,
                },
                [8].bit = {
                        .ecp = 0,
                        .dpa = 0,
                        .reserved = 0,
                        .chpri = 8,
                },
                [9].bit = {
                        .ecp = 0,
                        .dpa = 0,
                        .reserved = 0,
                        .chpri = 9,
                },
                [10].bit = {
                        .ecp = 0,
                        .dpa = 0,
                        .reserved = 0,
                        .chpri = 10,
                },
                [11].bit = {
                        .ecp = 0,
                        .dpa = 0,
                        .reserved = 0,
                        .chpri = 11,
                },
                [12].bit = {
                        .ecp = 0,
                        .dpa = 0,
                        .reserved = 0,
                        .chpri = 12,
                },
                [13].bit = {
                        .ecp = 0,
                        .dpa = 0,
                        .reserved = 0,
                        .chpri = 13,
                },
                [14].bit = {
                        .ecp = 0,
                        .dpa = 0,
                        .reserved = 0,
                        .chpri = 14,
                },
                [15].bit = {
                        .ecp = 0,
                        .dpa = 0,
                        .reserved = 0,
                        .chpri = 15,
                },
        },
};

xwbmpop_declare(mpc560xb_dma_channel_status, SOC_DMAC_CHANNEL_NUM) = {
        [0] = 0,
};

__xwds_soc_dma_tbl_qualifier
xwds_dma_f mpc560xb_dma_cbcb_array[SOC_DMAC_CHANNEL_NUM] = {
        NULL,
};

__xwds_soc_dma_tbl_qualifier
xwds_dma_cbarg_t mpc560xb_dma_chcbarg_array[SOC_DMAC_CHANNEL_NUM] = {
        NULL,
};

struct xwds_soc mpc560xb_soc_cb = {
        .dev = {
                .name = "mpc560xb.soc",
                .id = 1,
                .resources = &mpc560xb_soc_resources,
                .drv = xwds_static_cast(struct xwds_driver *, &mpc560xb_soc_drv),
                .data = NULL,
        },
        .xwccfg = &mpc560xb_soc_cfg,
        .gpio = {
                .cfg = (void *)mpc560xb_gpio_pincfgs,
                .pins = mpc560xb_gpio_pinstatus,
                .port_num = SOC_GPIO_PORT_NUM,
                .pin_num = SOC_GPIO_PIN_NUM,
        },
        .clk = {
                .num = MPC560XB_CLK_NUM,
        },
        .eirq = {
                .isrs = mpc560xb_eirq_isrs,
                .isrargs = mpc560xb_eirq_isrargs,
                .num = SOC_WKUP_NUM + SOC_EIRQ_NUM,
        },
        .dma = {
                .ccfg = (void *)&mpc560xb_dmac_cfg,
                .chstatus = mpc560xb_dma_channel_status,
                .ch_num = SOC_DMAC_CHANNEL_NUM,
                .chcbs = mpc560xb_dma_cbcb_array,
                .chcbargs = mpc560xb_dma_chcbarg_array,
        },
};
